package cn.jetpiece.cloud.common.api.message.model.result;

import cn.jetpiece.cloud.model.annotation.Dict;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;

import java.io.Serializable;
import java.util.Date;

/**
 * 系统通告表信息
 *
 * @author jetpiece
 * @since 2022-11-16
 */
@Data
@ApiModel
public class AnnouncementResult implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @Excel(name = "ID", width = 15)
    @JSONField(serializeUsing = ToStringSerializer.class)
    @ApiModelProperty(value = "ID")
    private Long id;

    /**
     * 租户编号
     */
    @ApiModelProperty(value = "租户编号")
    private String tenantId;

    /**
     * 标题
     */
    @Excel(name = "标题", width = 15)
    @ApiModelProperty(value = "标题")
    private String title;

    /**
     * 内容
     */
    @Excel(name = "内容", width = 15)
    @ApiModelProperty(value = "内容")
    private String msgContent;

    /**
     * 开始时间
     */
    @Excel(name = "开始时间", width = 15, format = "yyyy-MM-dd")
    @ApiModelProperty(value = "开始时间")
    private Date startTime;

    /**
     * 结束时间
     */
    @Excel(name = "结束时间", width = 15, format = "yyyy-MM-dd")
    @ApiModelProperty(value = "结束时间")
    private Date endTime;

    /**
     * 发布人
     */
    @Excel(name = "发布人", width = 15)
    @ApiModelProperty(value = "发布人")
    private String sender;

    /**
     * 优先级（L低，M中，H高）
     */
    @Excel(name = "优先级（L低，M中，H高）", width = 15)
    @ApiModelProperty(value = "优先级（L低，M中，H高）")
    private String priority;

    /**
     * 消息类型1:通知公告2:系统消息
     */
    @Excel(name = "消息类型1:通知公告2:系统消息", width = 15)
    @ApiModelProperty(value = "消息类型1:通知公告2:系统消息")
    private String msgCategory;

    /**
     * 消息接收用户类型
     */
    @Excel(name = "消息接收用户类型", width = 15)
    @ApiModelProperty(value = "消息接收用户类型")
    @Dict(dictCode = "MESSAGE_RECEIVER_USER_TYPE")
    private String msgReceiverUserType;

    /**
     * 发布状态（0未发布，1已发布，2已撤销）
     */
    @Excel(name = "发布状态（0未发布，1已发布，2已撤销）", width = 15)
    @ApiModelProperty(value = "发布状态（0未发布，1已发布，2已撤销）")
    private String sendStatus;

    /**
     * 发布时间
     */
    @Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd")
    @ApiModelProperty(value = "发布时间")
    private Date sendTime;

    /**
     * 撤销时间
     */
    @Excel(name = "撤销时间", width = 15, format = "yyyy-MM-dd")
    @ApiModelProperty(value = "撤销时间")
    private Date cancelTime;

    /**
     * 删除状态（0，正常，1已删除）
     */
    @Excel(name = "删除状态（0，正常，1已删除）", width = 15)
    @ApiModelProperty(value = "删除状态（0，正常，1已删除）")
    private Integer delFlag;

    /**
     * 业务类型(email:邮件 bpm:流程)
     */
    @Excel(name = "业务类型(email:邮件 bpm:流程)", width = 15)
    @ApiModelProperty(value = "业务类型(email:邮件 bpm:流程)")
    private String busType;

    /**
     * 业务id
     */
    @Excel(name = "业务id", width = 15)
    @ApiModelProperty(value = "业务id")
    private String busId;

    /**
     * 打开方式(组件：component 路由：url)
     */
    @Excel(name = "打开方式(组件：component 路由：url)", width = 15)
    @ApiModelProperty(value = "打开方式(组件：component 路由：url)")
    private String openType;

    /**
     * 组件/路由 地址
     */
    @Excel(name = "组件/路由 地址", width = 15)
    @ApiModelProperty(value = "组件/路由 地址")
    private String openPage;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    /**
     * 指定用户
     */
    @Excel(name = "指定用户", width = 15)
    @ApiModelProperty(value = "指定用户")
    private String userIds;

    /**
     * 摘要
     */
    @Excel(name = "摘要", width = 15)
    @ApiModelProperty(value = "摘要")
    private String msgAbstract;

    /**
     * 钉钉task_id，用于撤回消息
     */
    @ApiModelProperty(value = "钉钉task_id，用于撤回消息")
    private String dtTaskId;
}
